// #include <iostream>
// using namespace std;

// class animal{
// public:
//     void sleep(){cout << "animal sleep" << endl;}
//     void breath(){cout << "animal breathe haha" << endl;}
// };

// class fish : public animal{
// public:
//     void breath(){cout << "fish bubble" << endl;}
// };

// int main()
// {
//     animal *pAn = nullptr;
//     pAn->breath();
//     pAn->sleep();
//     fish *pFish = nullptr;
//     pFish->breath();
//     pFish->sleep();
//     return 0;
// }
// #include <iostream>
// // 宏定义示例
// #define MAX(a,b) ((a)>(b)?(a):(b))
// // 内联函数示例
// #include <stdio.h>
// inline int add(int a, int b){
//     return a + b;
// }

// int main()
// {
//     int a, b;
//     a = add(1, 2);
//     std::cout << a << std::endl;
//     b = MAX(1, 2);
//     std::cout << b << std::endl;
//     b = MAX(1, 3);
//     std::cout << b << std::endl;
// }

// #include <iostream>
// using namespace std;

// int main()
// {
//     int i = 2;
//     int j = 2;
//     j += i++; // 先赋值后加
//     cout << j << " " << i << endl;
//     i = 2;
//     j = 2;
//     j += ++i;// 先加后赋值
//     cout << j << ' ' << i << endl;

//     i = 0;
//     int* p1 = &(++i);
//     cout << *p1 << endl;
//     return 0;
// }

// #include <iostream>
// using namespace std;

// void testFunc(int a, int *b, int &c){
//     // 形参a值发生了改变，但是没有影响实参i的值：但形参*b，c的值发生了改变
//     a += 1;
//     (*b) += 1;
//     c += 1;
//     cout << a << ' ' << *b << ' ' << c << endl;
// }
// int main()
// {
//     int i = 1;
//     int a = 1;
//     int *j = &a;
//     int k = 1;
//     testFunc(i, j, k);
//     cout << i << ' ' << *j << ' ' << k << endl;
//     return 0;
// }

class Student{
public:
    // 默认构造函数
    Student(){
        num = 1001;
        age = 18;
    }
    // 初始化构造函数
    Student(int n, int a) : num(n), age(a){}
private:
    int num;
    int age;
};

int main()
{
    // 使用默认构造函数初始化对象S1
    Student s1;
    // 用初始化构造函数初始化对象S2
    Student S2(1002, 18);
    return 0;
}